#pragma once
#ifndef PARAMS_H
#define PARAMS_H
#include "Singleton.h"

/*

	Params Class.
	It's just a static costants container, callable with Params::DesiredValue.

*/

class Params : public Singleton<Params>
{
public:
	enum TeamColor{ red, blue };
	static const int RedKickOffRegion[];
	static const int RedDefRegion[]; 
	static const int RedAttRegion[];
	static const int BlueKickOffRegion[];
	static const int BlueDefRegion[];
	static const int BlueAttRegion[];

	const static float  GameUpdateTime;

	static float  GameTimeFactor;

	enum E_MatchMode{ AIvsAI , PvsAI, AIvsP };
	enum E_InputMode{ Keyboard, Gamepad };
	enum E_ScreenMode{ Window, Fullscreen};
	static int			MatchMode;
	static int			InputMode;
	static int			ScreenMode;

	//Ball's params
	const static float	BallPassSpeed;
	const static float	BallShotSpeed;
	const static float	BallSpeedAttenuation;
	const static int	BallCaptureRange;

	const static int	TackleRange;

	//GoalKeeper's params
	const static float	GKMaxSpeed;
	const static int	GKBallCaptureRange;
	const static float	GKSafenessRange;

	//FieldPlayer's params
	const static float	PlayerMaxSpeed;
	const static float	PlayerMaxSpeedWithBall;
	const static float	PlayerSafenessRange;
	const static float	PlayerTooShortPassRange;
	const static float	PlayerShotRange;
	const static float	DodgeRange;

	//User Controlled Player's params
	const static int	UserControlledBallCaptureRange;
	const static int	UserControlledTackleRange;


	const static float  PassInterceptRange;
	const static float  ShotInterceptRange;
	const static float  HotRegion;
};
#endif

